/**
 * 异步函数封装
 * @param generator 生成函数
 */
// eslint-disable-next-line no-unused-vars
function async(generator){
	//得到迭代器
	const iterator=generator();
	function inner({value,done}){
		if(done){
			return Promise.resolve(value);
		}
		return Promise.resolve(value).then(function(result){
			return inner(iterator.next(result));
		},function(error){
			// eslint-disable-next-line no-useless-catch
			try{
				//抛出的异常,在内部已经解决,继续执行
				return inner(iterator.throw(error));
			}catch(e){
				//未解决的异常抛出
				throw e;
			}
		});
	}
	//开始执行迭代器
	return inner(iterator.next());
}
